package com.zheng.study.core.service.impl;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.zheng.study.base.dao.BaseDao;
import com.zheng.study.base.service.impl.BaseServiceImpl;
import com.zheng.study.core.dao.TmedtechFlowDao;
import com.zheng.study.core.entity.TmedtechFlow;
import com.zheng.study.core.service.TmedtechFlowService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.*;

/**
 * newFile
 * ============================================================================
 * author : dzw
 * createDate:  2019/2/14 。
 * ============================================================================
 */
@Service
public class TmedtechFlowServiceImpl extends BaseServiceImpl<TmedtechFlow, String> implements TmedtechFlowService {

	@Autowired
	private TmedtechFlowDao tmedtechFlowDao;

	@Override
	public BaseDao<TmedtechFlow, String> getBaseDao() {
		return tmedtechFlowDao;
	}

	@Override
	public List<Map<String, String>> getMapList(List<Object> tmedtechFlowList) {
		List<Map<String, String>> data = new ArrayList<Map<String, String>>();
		for(Object o : tmedtechFlowList){
			data.add(getMap(o));
		}
		return data;
	}

	@Override
	public List<Map<String, String>> getNewMapList(List<Object> tmedtechFlowList) {
		List<Map<String, String>> data = new ArrayList<Map<String, String>>();
		for(Object o : tmedtechFlowList){
			data.add(getNewMap(o));
		}
		return data;
	}

	@Override
	public Map<String, String> getMap(Object obj) {
		Map<String, String> rMap = new LinkedHashMap<String, String>();
		Object[] os = (Object[])obj;
		rMap.put("flow_sequence", os[0]!=null ? String.valueOf(os[0]) : ""); //主键,配合医嘱流水号用于更新
		rMap.put("medtech_seq_no", os[1]!=null ? String.valueOf(os[1]) : ""); //医嘱流水号
		rMap.put("visit_id", os[2]!=null ? String.valueOf(os[2]) : ""); //住院号
		rMap.put("nstation_id", os[3]!=null ? String.valueOf(os[3]) : ""); //护士站
		rMap.put("bed_no", os[4]!=null ? String.valueOf(os[4]) : ""); //床号
		rMap.put("valid_flag", os[5]!=null ? String.valueOf(os[5]) : "");
		rMap.put("flow_flag", os[6]!=null ? String.valueOf(os[6]) : "");
		rMap.put("item_id", os[7]!=null ? String.valueOf(os[7]) : ""); //项目编码
		rMap.put("item_name", os[8]!=null ? String.valueOf(os[8]) : ""); //项目名称
		rMap.put("body_part", os[9]!=null ? String.valueOf(os[9]) : ""); //部位
		rMap.put("execute_dept", os[10]!=null ? String.valueOf(os[10]) : ""); //执行医技部门
		rMap.put("pat_status", os[11]!=null ? String.valueOf(os[11]) : ""); //推送方式
		rMap.put("emc_flag", os[12]!=null ? String.valueOf(os[12]) : ""); //是否急  1为急
		rMap.put("execute_date", os[13]!=null ? String.valueOf(os[13]) : ""); //预约日期
		rMap.put("execute_time", os[14]!=null ? String.valueOf(os[14]) : ""); //预约时间段
		rMap.put("remarks", os[15]!=null ? String.valueOf(os[15]) : ""); //备注
		rMap.put("flow_status", os[16]!=null ? String.valueOf(os[16]) : "");
		rMap.put("insert_by", os[17]!=null ? String.valueOf(os[17]) : "");
		rMap.put("insert_time", os[18]!=null ? String.valueOf(os[18]) : "");
		rMap.put("confirm_by", os[19]!=null ? String.valueOf(os[19]) : "");
		rMap.put("confirm_time", os[20]!=null ? String.valueOf(os[20]) : "");
		rMap.put("process_status", os[21]!=null ? String.valueOf(os[21]) : "");
		rMap.put("field1", os[22]!=null ? String.valueOf(os[22]) : "");
		rMap.put("field2", os[23]!=null ? String.valueOf(os[23]) : "");
		rMap.put("pat_name", os[24]!=null ? String.valueOf(os[24]) : ""); //病人姓名
		rMap.put("pat_no", os[25]!=null ? String.valueOf(os[25]) : ""); //队列号（B超系统用）
		rMap.put("pat_label", os[26]!=null ? String.valueOf(os[26]) : ""); //病人条码号（现在就发射科的有）
		return rMap;
	}

	@Override
	public Map<String, String> getNewMap(Object obj) {
		Map<String, String> rMap = new LinkedHashMap<String, String>();
		Object[] os = (Object[])obj;
		rMap.put("flow_sequence", os[0]!=null ? String.valueOf(os[0]) : ""); //主键,配合医嘱流水号用于更新
		rMap.put("medtech_seq_no", os[1]!=null ? String.valueOf(os[1]) : ""); //医嘱流水号
		rMap.put("item_name", os[2]!=null ? String.valueOf(os[2]) : ""); //项目名称
		rMap.put("execute_date", os[3]!=null ? String.valueOf(os[3]) : ""); //预约日期
		rMap.put("execute_time", os[4]!=null ? String.valueOf(os[4]) : ""); //预约时间段
		rMap.put("pat_status", os[5]!=null ? String.valueOf(os[5]) : ""); //推送方式
		rMap.put("pat_name", os[6]!=null ? String.valueOf(os[6]) : ""); //病人姓名
		rMap.put("bed_no", os[7]!=null ? String.valueOf(os[7]) : ""); //床号
		rMap.put("pat_label", os[8]!=null ? String.valueOf(os[8]) : ""); //病人条码号（现在就发射科的有）
		rMap.put("remarks", os[9]!=null ? String.valueOf(os[9]) : ""); //备注
		rMap.put("execute_dept", os[10]!=null ? String.valueOf(os[10]) : ""); //目的地代码
		rMap.put("visit_id", os[11]!=null ? String.valueOf(os[11]) : ""); //住院号
		rMap.put("emc_flag", os[12]!=null ? String.valueOf(os[12]) : ""); //是否紧急 1为急
		return rMap;
	}

	@Override
	public List<Object> getList() {
		return tmedtechFlowDao.getList();
	}

	@Override
	public List<Object> getNewList(String startDate, String endDate, String hasSeqNo) {
		if(StrUtil.isBlank(startDate)){
			startDate = DateUtil.format(new Date(), "yyyy-MM-dd");
		}
		if(StrUtil.isBlank(endDate)){
			startDate = DateUtil.format(DateUtil.offsetDay(new Date(), 7), "yyyy-MM-dd");
		}
		if(StrUtil.isBlank(hasSeqNo)){
			hasSeqNo = "";
		}
		return tmedtechFlowDao.getNewList(startDate, endDate, hasSeqNo);
	}

	@Override
	public Object getObjBySequence(String flow_sequence) {
		return tmedtechFlowDao.getObjBySequence(flow_sequence);
	}

	@Override
	public String getProcessStatusBySequence(String flow_sequence) {
		return tmedtechFlowDao.getProcessStatusBySequence(flow_sequence);
	}

	@Override
	public int updateProcessStatus(String flow_sequence, String status) {
		return tmedtechFlowDao.updateProcessStatus(flow_sequence, status);
	}
}
